package com.laolang.pluto.module.generator.service;

import com.github.pagehelper.PageInfo;
import com.laolang.pluto.common.persist.service.BaseService;
import com.laolang.pluto.module.generator.entity.GenTable;
import com.laolang.pluto.module.generator.pojo.po.TableDetailPo;
import com.laolang.pluto.module.generator.pojo.po.TableInfoPo;
import java.util.Date;
import java.util.List;

/**
 * @author laolang
 * @date 2021-08-01 16:34
 */
public interface GenTableService extends BaseService<GenTable> {
    /**
     * 查询代码生成列表
     *
     * @param page         页数
     * @param size         页尺寸
     * @param tableName    表名(模糊匹配)
     * @param tableComment 表描述(模糊匹配)
     * @param startDate    创建开始时间
     * @param endDate      创建结束时间
     * @return PageInfo<GenTable>
     */
    PageInfo<GenTable> selectTableList(Integer page, Integer size, String tableName, String tableComment,
                                       Date startDate, Date endDate);

    /**
     * 查询当前数据库中表的信息
     *
     * @param page         页数
     * @param size         页尺寸
     * @param tableName    表名(模糊匹配)
     * @param tableComment 表描述(模糊匹配)
     * @return PageInfo<TableInfoPo>
     */
    PageInfo<TableInfoPo> selectTableInfoList(Integer page, Integer size, String tableName, String tableComment);

    /**
     * 根据表名查询表信息
     *
     * @param tableName 表名
     * @return 表信息
     */
    TableInfoPo selectTableInfoByTableName(String tableName);

    /**
     * <p>查询当前数据库表的列详情</p>
     * <code>show full columns from ${tableName}</code>
     *
     * @param tableName 表名
     * @return 列信息
     */
    List<TableDetailPo> selectTableDetail(String tableName);
}
